<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // reduce方法：数组的求和方法
    let arr = [2, 3, 4, 5]
    // 语法一：
    // let res1 = arr.reduce((总和，数组元素) => {
    //   return 累加的式子
    // }, 初始值)
    let res1 = arr.reduce((t, c) => {
      // 第一次循环：t = 100，c = 2  返回：100 + 2=102
      // 第二次循环：t = 102，c = 3  返回：102 + 3=105
      // 第三次循环：t = 105，c = 4  返回：105 + 4=109
      // 第四次循环：t = 109，c = 5  返回：109 + 5=114
      return t + c
    }, 100)
    // 语法二：
    // let res2 = arr.reduce((总和，数组元素) => {
    //   return 累加的式子
    // })
    let res2 = arr.reduce((t, c) => {
      // 第一次循环：t = 2，c = 3  返回：2 + 3=5
      // 第二次循环：t = 5，c = 4  返回：5 + 4=9
      // 第三次循环：t = 9，c = 5  返回：9 + 5=14
      return t + c
    })
    // ----------------------------- 实例 ---------------------------------------
    let list = [
      { id: 21, subject: '语文', score: 90 },
      { id: 32, subject: '数学', score: 100 },
      { id: 35, subject: '艺术', score: 100 }
    ]

    // let res = list.reduce(() => {}, 初始值)
    let res = list.reduce((t, c) => {
      // 有初始值，t = 0  c = 第1个元素
      // 第1次循环：t = 0;  c = 第1个元素；   返回 0 + 90 = 90
      // 第2次循环：t = 90; c = 第2个元素；   返回 90 + 100 = 190
      // 第3次循环：t = 190;c = 第3个元素；   返回 190 + 100 = 290
      return t + c.score
    }, 0)

    console.log(res)
  </script>
</body>

</html>